The historical reason why the POSTGRES backend is required to send multiple
result sets is to support cursors on queries involving type inheritance and
anonymous target lists.
begin
declare c cursor for
select e.oid, e.* from EMP* e
fetch 10 in c
...
To handle the command sequence above, frontend applications would need to
be provided with a new result descriptor when the "fetch 10 in c" crosses a
result set boundary.